#include "serverCache.h"

bool Cache::insertar(const tDato& dato) {
	 std::map <std::string, std::string>::const_iterator it;
	 bool encontrado = false;

	 mutex.bloquear();

	 it = cache.begin();

	 while ((!encontrado) && (it != cache.end())) {
		if ((*it).first == dato.first)
			encontrado = true;
		it++;
	 }
	  if (!encontrado)
		 cache[dato.first] = dato.second;

	  mutex.desbloquear();

	  return !encontrado;
}

std::string Cache::consultar(const std::string& clave) {
	std::map <std::string, std::string>::const_iterator it;
	std::string resultado;
	bool encontrado = false;

	mutex.bloquear();

	it = cache.begin();

	while ((!encontrado) && (it != cache.end())) {
		if ((*it).first == clave)
			encontrado = true;
		it++;
	 }
	 if (encontrado)
		 resultado = cache[clave];

	mutex.desbloquear();
	return resultado;
}

bool Cache::eliminar(const std::string& clave) {
	mutex.bloquear();
	if (cache.erase(clave)) {
		mutex.desbloquear();
		return true;
	}
	else {
		mutex.desbloquear();
		return false;
	}
}
